package com.fastloan.jn.mgt.process.dao;

import com.fastloan.jn.mgt.process.model.JnAppApproveUser;
import com.fastloan.jn.mgt.process.model.vo.AppApproveUserVo;
import com.kawins.base.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.kie.api.task.model.User;

import java.util.List;
import java.util.Map;

public interface JnAppApproveUserMapper extends BaseMapper<JnAppApproveUser> {
    /**
     * 获取排序后的UserId集合
     *
     * @param users user集合
     * @return 排序后的UserId集合
     */
    List<Integer> selectOrderUser(List<User> users);

    /**
     * 查询待审核进件(普通审批)
     *
     * @param map
     * @return
     */
    List<AppApproveUserVo> queryApproval(Map<String, Object> map);

    /**
     * 查询待审核进件(贷审会审批)
     *
     * @param map
     * @return
     */
    List<AppApproveUserVo> queryApprovalReview(Map<String, Object> map);

    /**
     * 初始化审贷会成员信息
     *
     * @param map 客户经理id
     * @return 数据库变记录
     */
    int initialization(Map<String, Object> map);

    /**
     * 查询最后一条审批信息的审批金额和审批信息
     *
     * @param applicationId 进件id
     * @param flag          是否审贷会 0否, 1是
     * @return 最后一条审批信息的审批金额和审批信息
     */
    JnAppApproveUser queryEndApprovalUser(@Param("applicationId") Integer applicationId, @Param("flag") int flag);

    /**
     * 更新信息(审贷会用)
     *
     * @param appApproveUser 用户信息
     * @return 数据库变记录
     */
    int updateStatus(JnAppApproveUser appApproveUser);

    /**
     * 当前审批总额(审核专家)
     * @param userId 用户id
     * @return 统计数量
     */
    Integer queryApproveAmountCount(@Param("userId") int userId, @Param("customerType") int customerType);

    /**
     * 查询统计相关(审核专家)
     *
     * @param userId    用户id
     * @param status    审批状态
     * @param flag    true status=** / false status !=**
     * @return 统计数量
     */
    Integer queryCount(@Param("userId") int userId, @Param("status") int status, @Param("flag") boolean flag, @Param("customerType") int customerType);
}